package com.typ.blog.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.typ.blog.entity.Classification;
import com.typ.blog.mapper.ClassificationMapper;
import com.typ.blog.service.ClassificationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.*;
import java.util.stream.Collectors;

/**
 * 路径：com.typ.blog.service.impl.ClassificationServiceImpl.java
 * 类名：ClassificationServiceImpl.java
 * 功能：文章分类、类型
 * 备注：
 * 创建人：typ
 * 创建时间：2019/12/1 19:23
 * 修改人：
 * 修改备注：
 * 修改时间：
 */
@Slf4j
@Service
public class ClassificationServiceImpl implements ClassificationService {

    @Autowired
    private ClassificationMapper classificationMapper;

    /**
     * 方法名：classification
     * 功能：获取分类和类型
     * 描述：
     * 创建人：typ
     * 创建时间：2019/11/21 20:58
     * 修改人：
     * 修改描述：
     * 修改时间：
     */
    @Override
    public Map<String, List<Classification>> classification() {
        List<Classification> classifications = classificationMapper.classification(null, null);
        Map<Integer, List<Classification>> c = classifications.stream().collect(Collectors.groupingBy(Classification::getType));
        Map<String, List<Classification>> classification = new HashMap<>();
        classification.put("types", c.get(1));
        classification.put("classifys", c.get(2));
        return classification;
    }

    /**
     * 方法名：typeList
     * 功能：文章分类、类型列表
     * 描述：
     * 创建人：typ
     * 创建时间：2019/12/1 19:27
     * 修改人：
     * 修改描述：
     * 修改时间：
     */
    @Override
    public PageInfo<Classification> list(Integer type, Integer pageNum, Integer pageSize, String search) {
        PageHelper.startPage(pageNum, pageSize);
        List<Classification> list = classificationMapper.classification(type, search);
        return new PageInfo<>(list);
    }

    /**
     * 方法名：save
     * 功能：添加、修改
     * 描述：
     * 创建人：typ
     * 创建时间：2019/12/1 19:27
     * 修改人：
     * 修改描述：
     * 修改时间：
     */
    @Override
    public Integer save(Classification classification) {
        Integer rows = 0;
        if(Objects.isNull(classification.getId())){
            classification.setId(UUID.randomUUID().toString());
            rows = classificationMapper.insert(classification);
        } else{
            rows = classificationMapper.update(classification);
        }
        return rows;
    }

    /**
     * 方法名：del
     * 功能：删除
     * 描述：
     * 创建人：typ
     * 创建时间：2019/12/1 19:27
     * 修改人：
     * 修改描述：
     * 修改时间：
     */
    @Override
    public Integer del(Classification classification) {
        return classificationMapper.del(classification);
    }
}
